<?php
/**
 * 判断字符串是否是email
 * @param str $str
 * @return 是email返回true,不是返回false
 */
function ismail($str)
{
	preg_match("/[\w\-\.]+@[\w\-\.]+\.[\w]+/", $str,$t);
	return ($t[0])?true:false;
}
/**
 * 判断字符串是否只由字母，数字，下划线或中划线或.组成
 * @param str $str
 * @param 成功返回true  失败返回false
 */
function isstri($str)
{
	preg_match("/[\w\-\.]+/", $str,$t);
	return ($t[0])?true:false;
}

/**
 * 根据传过来的产品id,返回一定格式的产品编号
 * Enter description here ...
 * @param unknown_type $tid
 */
function gettourbianhao($tid)
{
	if(!is_numeric($tid)) return $tid;
	return substr("10000000", 0,-strlen($tid)).$tid;
}
/**
 * 根据产品编号,返回线路的id
 * @param int $tid
 */
function formtourbianhao($tid)
{
	if(!is_numeric($tid)) return $tid;
	return preg_replace("/^10{0,}/", "", $tid);
}
/**
 * 转化正则表达式，解决在tp的模板里，反斜杠，会被自动去掉的问题
 * 模板里的反斜杠用##代替
 * @param  $str
 */
function foramtzhengc($str){
	return str_replace("##", "\\", $str);
}

/**
 * 传递一个数组进来，返回其中的一个单元
 * Enter description here ...
 * @param unknown_type $arr
 */
function getRandArray($arr)
{
	return $arr[array_rand($arr)];
}


/**
 * 解析合并后的内容，每个项按一定的格式存放
 * @param $str 数据库里存放的内容  存放格式{@客内:这是内容}{@客名:这是客服人员的名称} 等
 * @param $flag 表示要获取哪一个值
 */
function getformcontent($str,$flag)
{
	if($str=="") return "";
	return getkuohaostr($str,"/\{@".$flag."\:([\s\S]*?)@\}/");
}
/**
 * 字符串截取，支持中文和其他混合字符
 * 对开始位置和截取长度可能会根据实际情况后移一个单位，以保证补全至一个完整字符
 * @param string $str 被截取的源字符串
 * @param string $start 开始位置，以半角字符为单位，如：英文/数字占一个单位，汉字占2个单位
 * @param string $length 截取长度，以半角字符为单位，如：英文/数字占一个单位，汉字占2个单位
 * @param string $charset 源字符串的编码格式（可能与本程序文件的编码有关）
 * @param string $suffix 截取出的字符串附加后缀
 * @return string
 */
function mstrcut($str, $length, $start=0, $charset="utf-8", $suffix=true) {
	// 参数检查
	if(
		   empty($str)
		|| empty($length)
		|| !is_numeric($length)
		|| $length<=0
		|| !in_array($charset,array('utf-8','gb2312','gbk','big5'))
	) return "";
	// 首先根据指定编码将字符串拆解为单个字符
	$re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
	$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
	$re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
	$re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
	preg_match_all($re[$charset], $str, $match);
	// 计算源字符串的字符数
	$count = count($match[0]);
	// 计算截取的起始位置
	$i = 0;
	$begin = 0;
	while($start > 0) {
		// 如果当前游标位置已经超过源字符数，却还未到达截取的起始位置，则立即返回空
		if($i >= $count) return "";
		$start -= (strlen($match[0][$i]) > 1 ? 2 : 1);
		$i++;
	}
	$start = $i;//此处的$start已经变化为数组的游标
	// 计算截取的终止位置，即$i的最终值
	while($length > 0) {
		// 如果当前游标位置已经超过源字符数，却还未到达预定的终止位置，则停止
		if($i >= $count) break;
		$length -= (strlen($match[0][$i]) > 1 ? 2 : 1);
		$i++;
	}
	$slice = join("",array_slice($match[0], $start, $i-$start));
	// 智能附加省略号
	return ($suffix && ($i < $count)) ? $slice.'...' : $slice;
}

//返回正则获取后的第一个值
function getsubstr($str,$zc)
{
	preg_match($zc, $str."",$temp);
	return (isset($temp))?$temp[0]:"";
}


//转换日期形式的字符串为正则格式，以便用于传合成正则
function turntostrtozc($str){
	 return($str=="")?"":str_replace("-","\-",$str);
}



/**
 * 正则中第一个匹配项中的第一个括号中的值
 * @param 源字符串
 * @param 正则表达式
 * @return 返回正则中第一个匹配项中的第一个括号中的值
 */
function getkuohaostr($str,$zc)
{
	preg_match($zc, $str."",$temp);
	return (isset($temp))?$temp[1]:"";
	
}



/**
 * 
 * 替换正则中的第一个括号里的内容
 * @param  $str 源字符串
 * @param $replacem 替换后的内容
 *  @param $zc 正则
 */
function replaceKuohaostr($str,$replacem,$zc)
{
	preg_match($zc, $str."",$temp);
	$temp=(isset($temp))?$temp[1]:"";
	return str_replace($temp, $replacem, $str);
}





/**
 * 返回正则获取后的第一个值,用于格式化日期
 * Enter description here ...
 * @param unknown_type $str
 * @param unknown_type $zc
 */
function getdatestr($str,$zc)
{
	preg_match($zc, $str."",$temp);
	if(isset($temp))
	{
		return	preg_replace("/^20[\d]{2,2}-/", "", $temp[0]);
	}
	return "";
}

function gourl($url,$type)
{
//自动跳转页 $url跳转的地址 $type跳转的类型
	if($type==1)
		{
			echo "<meta http-equiv=\"refresh\" content=\"0; url=".$url."\">";
			die;
		}
}

//弹出对话框并跳转目标网址
function alert($url,$type,$string)
{
	if($type==0)
	{
		echo "<script language=\"JavaScript\">alert(\"".$string."\");</script>";
	}
	elseif($type==1)
	{
		echo "<script language=\"JavaScript\">\r\n";
		echo " alert(\"".$string."\");\r\n";
		echo " history.back();\r\n";
		echo "</script>";
		die;
		exit;
	}
	elseif($type==2)
	{
		echo "<script language=\"JavaScript\">\r\n";
		echo " alert(\"".$string."\");\r\n";
		echo " location.replace(\"".$url."\");\r\n"; // 前往目标网址
		echo "</script>";
		exit;
	}
	elseif($type==3)
	{
		echo "<script language=\"JavaScript\">\r\n";
		echo " alert(\"".$string."\");\r\n";
		echo "window.close()";
		echo "</script>";
		exit;
	}
	elseif($type==4)
	{
		echo "<script language=\"JavaScript\">\r\n";
		echo " location.replace(\"".$url."\");\r\n"; // 前往目标网址
		echo "</script>";
		exit;
	}
}
/**
 * 计算出评论的分数
 * @param $str 格式 如:预定|2|客服|1|住宿|1|交通|1|导游|1|行程|1
 * @return int 返回总的评论得分数
 */
function formstPinglunToNum($str)
{
	preg_match_all("/[0-9]/",$str,$tem);

	$t=0;
	$t=array_sum($tem[0]);
	/*
	foreach($tem[0] as $k=>$v)
	{
		$t=$t+$v;
	}
	*/
	$t=number_format($t/12,2)*100;
	return $t;
}



/**
 * 分类页
 * @param 记录集 $mr
 * @param 字符串 $sqlwhere  查询的条件
 * @param 数字 $pagecount 每页显示条数 
 * @param 字符串 $otherurl  链接的其它参数
 * @param 数字 $type  查询类型 默认为1，当是1时，表示用模型方式查，如果是2表示用原生态sql语句查
 * @param 返回一个数组$rs,它包含两个项一个是$rs["rs"],查询到的记录集,另一个$rs["show"]是翻页的导航html代码
 */
function fanye($mr,$sqlwhere,$pagecount,$type="1",$otherurl="")
{
	
	$p=($_GET["p"])?$_GET["p"]:1;//默认第一页
	
	
	//根据查询方式不同建立不同的模型.
	import("ORG.Util.Page");//导入分页库
	
	
	if($type=="1"){
		
		$list = $mr->where($sqlwhere)->page($p.','.$pagecount)->select();//模型查询
		$count      = $mr->where($sqlwhere)->count(); // 查询满足要求的总记录数
	}
	if($type=="2"){

		$startn=($p==1)?0:($p-1)*$pagecount;
		$tsql=$sqlwhere." limit ".$startn.",".$pagecount;
		
		$list = $mr->query($tsql);//原生态sql语句查询
		
		preg_match("/^[\s]*select[\s]+\*[\s]*,/i",$sqlwhere,$flagarr);	
		$tempfffy=(!$flagarr[0])?" , ":"";
		$csql=preg_replace("/^[\s]*select[\s]+[\*]{0,1}/i", "select count(*) as sys_countnumv".$tempfffy, $sqlwhere);
		$csql=preg_replace("/,[\s]*from/"," from",$csql);
		$temprs=$mr->query($csql); // 查询满足要求的总记录数
		$count=($temprs)?$temprs[0]["sys_countnumv"]:0;
	} 
	
	$Page       = new Page($count,$pagecount); // 实例化分页类 传入总记录数和每页显示的记录数
	//分页跳转的时候保证查询条件
 	$Page->parameter=$otherurl;
	$show= $Page->show(); // 分页显示输出
	$rs=array();
	$rs["rs"]=$list;
	$rs["show"]=$show;
	return $rs;
}



/**
 * 把审核字段的值转化成中文 其值表示通过时为1 其它值时表示不通过
 * @param int $str
 * @return string 返回"已审核"或"未审核"
 */
function turnshenghe($str)
{
	$tem=($str==1)?"已审核":"未审核";
	return $tem;
}

/**
 * 在php文件以js文件运行时，转换文件里的引号问题
 * @param str $str 源字符串
 */
function jstowrite($str)
{
	return str_replace("'","\'",$str);
}


	/**
	 * 格式化时间，转换成数字存入数据库
	 * @param timestr $str  日期型字符串
	 */
	function formattime($str)
	{
		return ($str!="")? strtotime($str):0;
	}

	/**
	 * 当值为空时返回现在的时间值
	 * @param $str 字符串时间形式
	 */
	function getmorentime($str)
	{
		 return ($str=="")? time():$str;
	}
	
	/**
	 * 当复选框不点时，要模型里修正其值
	 * @param $str
	 */
	function getis0orit($str)
	{
		return ($str=="")?0:$str;
	}
	

/**
 * 获取评论的满意度，例如：预定|2  其中2为一般，1为满意 3为不满意  返回"一般"
 * @param  $str 字符串，若传有汉字，也只提取数字
 */
function getPinglunCnameValue($str)
{

	$temp=preg_replace("/[^0-9]*/","",$str);


	if(strlen($temp)>0)
	{
		if($temp=="2") return "满意";
		if($temp=="1") return "一般";
		if($temp=="0") return "不满意";
	}
	else
	{
		return "";
	}
}

//返回格式后的化评论  初始值应为：预定|2|客服|1|住宿|1|交通|1|导游|1|行程|1  1为满意 2为一般 3为不满意  目前是六个选项
/**
 * 返回格式化后的评论
 * @param string $str
 */
function formatPinglun($str)
{
	//$str=iconv("gb2312","UTF-8",$str);
	preg_match("/预定\|[0-9]{1}/",$str,$yuding);
	preg_match("/客服\|[0-9]{1}/",$str,$kefu);
	preg_match("/住宿\|[0-9]{1}/",$str,$zhusu);
	preg_match("/交通\|[0-9]{1}/",$str,$jiaotong);
	preg_match("/导游\|[0-9]{1}/",$str,$daoyou);
	preg_match("/行程\|[0-9]{1}/",$str,$xingchen);
	//die($yuding[0]);
	$Temp="<b>预定</b>:".getPinglunCnameValue($yuding[0])."&nbsp;";
	$Temp=$Temp."<b>客服</b>:".getPinglunCnameValue($kefu[0])."&nbsp;";
	$Temp=$Temp."<b>住宿</b>:".getPinglunCnameValue($zhusu[0])."&nbsp;";
	$Temp=$Temp."<b>交通</b>:".getPinglunCnameValue($jiaotong[0])."&nbsp;";
	$Temp=$Temp."<b>导游</b>:".getPinglunCnameValue($daoyou[0])."&nbsp;";
	$Temp=$Temp."<b>行程</b>:".getPinglunCnameValue($xingchen[0])."&nbsp;";

	return $Temp;
	/*

	$temparr=explode("|",$str);
	if(count($temparr)!=6) $temparr=array(6);
	$rearr=array();//返回的数组
	for($i=0;$i<6;$i++)
	{
		if($temparr[$i]==1) $rearr[$i]="满意";
		if($temparr[$i]==2) $rearr[$i]="一般";
		if($temparr[$i]==3) $rearr[$i]="不满意";
		if($temparr[$i]=="") $rearr[$i]="满意";
	}
	$rearr[0]="预定:".$rearr[0];
	$rearr[1]="客服:".$rearr[1];
	$rearr[2]="住宿:".$rearr[2];
	$rearr[3]="交通:".$rearr[3];
	$rearr[4]="导游:".$rearr[4];
	$rearr[5]="行程:".$rearr[5];
	return $rearr;
	*/
}



	/**
 	 * 显示栏目的下拉列表框
 	 * @param  $mydb 实列化后的数据库连接信息，
 	 * @param str $selectname 下拉框的名称，民
 	 * @param string $sqlstr sql语句
 	 * @param $optionStr 为option的值格式"值|表现出的值" 如<option vaule="值">表现出的值</option>
 	 * @param  $seletedStr 为默认选定项的值
 	 * @return 返回计算后的html代码
 	 */
	function ui_select($mydb,$selectname,$sqlstr,$optionStr,$seletedStr)
   {
    $optionArr=explode("|", $optionStr);
   ?>
   <select name="<?php echo $selectname?>">
<option value="0">一级栏目</option>
<?php
$rscf=$mydb->db_select_query($sqlstr);
while($rsf=$mydb->db_fetch_array($rscf))
{
?>
<option value="<?php echo $rsf[$optionArr[0]];?>"><?php echo $rsf[$optionArr[1]];?></option>
<?php
 }
 ?>
 </select>
   <?php
   //函数结束
}

//中文字符串乱码获取
function msubstr($str, $start, $len) {
    $tmpstr = "";
    $strlen = $start + $len;
     for($i = 0; $i < $strlen; $i++) {
         if(ord(substr($str, $i, 1)) > 0xa0) {
            $tmpstr .= substr($str, $i, 2);
            $i++;
         } else
            $tmpstr .= substr($str, $i, 1);
     }
     return $tmpstr;
}


/**
 * 获取字字符串
 * @param $str  源字符串
 * @param $start 开始位置
 * @param $limit_length 长度
 * @param $omit 省略后的替换符
 * @return 返回计算后的字符串
 */
function my_substr($str,$start,$limit_length,$omit="...") {
	$return_str = "";//返回的字符串
	$len = mb_strlen($str,'utf8');// 以utf-8格式求字符串的长度，每个汉字算一个长度
	if ( $len > $limit_length )
	{
		$omit =$omit;
	}
	else
	{
		$limit_length = $len;
	}
	for ($i = $start; $i < $limit_length; $i++)
	{
		$curr_char = mb_substr($str,$i,1,'utf8');//以utf-8格式取得第$i个位置的字符，取的长度为1
		$curr_length = ord($curr_char) > 127 ? 2 : 1;//如果大于127，则此字符为汉字，算两个长度
		$return_str .= $curr_char;
	}
	return $return_str.$omit;
}

/**
 * 去除html格式的功能
 * @param $str 源字符串
 * @return 返回去掉html代码后的字符串
 */
function getDelHtml($str)
{
	return preg_replace("/<[\s\S]*?>/","",$str);
}

/**
 * 把导航的字符串，转换成成页面标题
 * @param $str 源字符串
 */
function navtotitle($str)
{
	$temp=getDelHtml($str);

	$temp=preg_replace("/>/", "旅游线路,",$temp);
	$temp=str_replace(" ", "", $temp);
	$temp=str_replace("首页旅游线路,", "", $temp);
	$temp=str_replace("您搜索的关键字是：", "", $temp);

	$temp=preg_replace("/\,$/", "", $temp);
	$temp=$temp."线路";
	$temp=str_replace("线路列表查看线路", "", $temp);
	$temp=str_replace(",", " ", $temp);
	$temp=preg_replace("/(&nbsp;){2,}/", " ", $temp);
	return $temp;
}

/**
 * 去除重复值，只留下最开始的一个
 * @param  $str
 * @param  $typev 周期类型值
 * @param  $anydate
 * @return 返回替换后的字符串
 */
function getSomeValue($str,$typev,$anydate)
{

	if($typev=="每周")
	{
		return preg_replace("/,周/",",",$str);
	}

	if($typev=="任意")
	{
		$temparr=explode(",", $anydate);
		sort($temparr);
		$temp="";
		foreach($temparr as $v)
		{
			$temp=$temp.$v."<br>";
		}
		$temp=substr($temp,0,-4);
		return $temp;
	}

	return preg_replace("/,周/",",",$str);
}



/**
 * 一个日期的上一个月 传入值格式为
 * @param 字符串 $da 一个日期值2010-10-12
 */
function getpmodth($da)
{
	$lastmonth = mktime(0, 0, 0, date("m",strtotime($da))-1, date("d",strtotime($da)),   date("Y",strtotime($da)));
	$lastmonth=date('Y-m',$lastmonth);
	return $lastmonth;
}

//返回下一个月的月份
function getnextmodth($da)
{
	$lastmonth = mktime(0, 0, 0, date("m",strtotime($da))+1, date("d",strtotime($da)),   date("Y",strtotime($da)));
	$lastmonth=date('Y-m',$lastmonth);
	return $lastmonth;
}

//转换大写数字为小写  一般用于转换日历值
function getTurnDtoXnum($str)
{
	$str=str_replace("一","1",$str);
	$str=str_replace("二","2",$str);
	$str=str_replace("三","3",$str);
	$str=str_replace("四","4",$str);
	$str=str_replace("五","5",$str);
	$str=str_replace("六","6",$str);
	$str=str_replace("日","0",$str);
	return $str;
}


	/**
	 *获取两标识符中间的字符串,支持正则，所以标识符里有正则常量符时要加转义符
	 * @param str $str 源字符串
	 * @param str $lflag 左边标识符  如"\{好人\}"
	 * @param str $rflag 右边标识符  如 "*\{\/好人\}"
	 * @param int $retype 默认为0时，只返回第一个 等于"all"时返回所有查到的季符串
	 * @param $isboder 是否包含原来的两个边界
	 * @return 返回查找到后的数组
	 */
	function getMiddleStr($str,$lflag,$rflag,$retype="0",$isboder="no")
	{
		preg_match_all("/".$lflag."[\s\S]*?".$rflag."/",$str,$arr);
		$r=str_replace("\\","",$rflag);
		$l=str_replace("\\","",$lflag);

			foreach($arr as $kt=> $vt)
			{
				foreach($vt as $k=>$v)
				{
					if($isboder=="no")
					{
						$arr[$k]=str_replace($r,"",$v);
						$arr[$k]=str_replace($l,"",$arr[$k]);
					}
					else
					{
						$arr[$k]=$v;
						$arr[$k]=$arr[$k];
					}
				}
			}

		if($retype=="all") return $arr;
		return $arr[$retype];
	}

	/**
	 * 获取生成排序的select代码值
	 * @param string $idstr
	 * @param int $selectedvalue
	 * @param int $max  默认为5
	 */
	function ui_select_paixu($idstr,$selectedvalue="",$max=5)
	{
		$temp="<select name='$idstr' id='$idstr'>";
		for ($i=1;$i<=$max;$i++)
		{
			$t2="";
			if($selectedvalue==$i) $t2="selected";
			$temp=$temp."<option value='$i' $t2>$i</option>";
		}
		$temp=$temp."</select>";
		return $temp;
	}

	/**
	 *返回计算后的复选框的html代码,若实际值和默认值相同时，显示勾选状态,显示一个复选框
	 * @param $idstr id值或name值
	 * @param $mvalue 默认值  默认为1
	 * @param $dvalue 实际值  默认为空
	 * @return 返回生成后的html代码
	 */
	function ui_checkbox_shenghe($idstr,$dvalue="",$mvalue="1")
	{
		$t1="";

		if($mvalue==$dvalue) $t1="checked";
		$temp="<input type='checkbox' name='$idstr' id='$idstr' value='$mvalue' $t1 />";
		return $temp;
	}

	/**
	 * 显示是否已审核状态
	 * @param $str 审核字段的值 ，通常审核通过其值为1
	 */
	function ui_show_shenghe($str)
	{
		$tem=($str=="1")?"已审核":"未审核";
		return $tem;
	}


	/**
	 * 显示多个币种下拉选项
	 * @param $elename 标签id名称
	 * @param $dv 当前值
	 */
	function ui_select_bizhong($elename,$dv)
	{
		$temp="<select name='$elename' id='$elename'>";
		global $DuoBiZhong;
		foreach($DuoBiZhong as $k=>$v)
		{
			$cd="";
			if($dv=="人民币" or $dv=="RMB" ) $cd="selected";
			if($dv=="美元" or $dv=="USD" ) $cd="selected";

			$temp=$temp."<option value='$k' $cd>$v</option>";
		}


		$temp=$temp."</select>";
		return $temp;
	}


	/**
	 * 获取显示支付方式的下拉列表框
	 * @param $elename
	 * @param $dv
	 */
	function ui_select_paytype($elename,$dv)
	{
		$temp="<select name='$elename' id='$elename'>";
		global $PayType;
		foreach($PayType as $k=>$v)
		{
			$cd="";
			if($dv==$k) $cd="selected";
			$temp=$temp."<option value='$k' $cd>$v</option>";
		}


		$temp=$temp."</select>";
		return $temp;
	}

	/**
	 * 自动给新闻地址加上前缀和后缀
	 * @param str $str  保存在数据库里的静态地址名
	 * @return 返回合并生成后的的新闻地址
	 */
	function turnnewsurl($str)
	{
		if($str!="")
		{
			return "/html/".$str.".htm";
		}
		else
		{
			return "";
		}

	}

	/**
	 * 显示button是否是只读状态,当两个值相等时，显示readonly
	 * @param $dv 当前值
	 * @param $mv 默认值,为1
	 * @return 两个值相等，显示readonly 否则不处理
	 */
	function ui_button_disabled($dv,$mv="1")
	{
		if($dv==$mv) return "disabled='disabled'";
	}

	/**
	 * 获取线路表里的othercontent字段的其中一个选项值
	 * @param str $srt为源字段值
	 * @param str $strflag 选项的标识变量
	 */
	function getOtherFieldofOne($str,$strflag)
	{
		if($str!="")
		{
			 preg_match("/\[id\=".$strflag."#[\s\S]*?\]/",$str,$arr);
			$temp=str_replace("[id=".$strflag."#","",$arr[0]);
			$temp=str_replace("]","",$temp);
			return $temp;
		}
		return "";
	}


/**
 * 判断用户的权限
 * @param int $yuan  用户存储的权限值
 * @param int $num   要判断的权限值
 * @return 若有权限返回true,失败返回false
 */
function getUserPower($yuan,$num)
{
	$tem=array();
	for($i=1;$i<=$yuan;$i++)
	{
		 if($i % 2==0 or ($i==1 and $yuan % 2 !=0)) $tem[$i]=$i;
	}

	foreach($tem as $k=> $v)
	{
		if($v==$num) return true;
	}
	return false;

}

/**
 * 检查用户某一个模块的某一个权限
 * @param str $userpower  用户的存储的权限字段
 * @param string $powerclass  认证的哪一个模块的权限
 * @param int $powervale  查看什么权限  如查看读取权限
 * @param $user  一般用户验证的时候不传值
 * @return  若失败,返回false 成功返回true
 */
function checkpower($userpower,$powerclass,$powervale,$user="")
{
	global $SystemConest;

	//当是超级帐号时，不受限制
	//return TRUE;
	if($user=="")
	{
		if(strstr($SystemConest[2],",".$_SESSION["Login"]["username"].",")!=false) return true;
	}
	if($userpower!="")
	{
		if(preg_match("/".$powerclass."\|[0-9]+/", $userpower,$a1))
		{
			$p=preg_replace("/".$powerclass."\|/", "", $a1[0]);
			if(getUserPower($p,$powervale)) return true;
			return false;
		}

	}
	return false;
}

/**
 * 在权限管理处显示是否选中
 */
function showischeckpower($userpower,$powerclass,$powervale,$user="")
{

	if(checkpower($userpower,$powerclass,$powervale,$user))
	{
		return  "checked";
	}

}

/**
 * 在具体模块中检查权限值  应用一例 RunCheckPower($_SESSION["Login"]["power"],"news",2);
 * @param str $userpower  用户的存储的权限字段
 * @param string $powerclass  认证的哪一个模块的权限
 * @param int $powervale  查看什么权限  如查看读取权限
 * @return 失败弹出对话框，并返回  成功不做处理
 */
function RunCheckPower($userpower,$powerclass,$powervale)
{
	if(checkpower($userpower,$powerclass,$powervale)==false)
	{

		alert("",1,"你没权限或没有登陆，返回！");
		die;
	}

}

/**
	 * 生成任意url地址为静态html页面功能
	 * @param str $url 源url地址  完整的并以http开头
	 * @param str $hmtlfile  欲生成的html文件,请以“/”开始 命名名规则为常规文件
	 * @return 成功返回true 失败返回false
	 */
	function CreateAnyUrltoHtml($url,$htmlfile)
	{
		if($url!="" and $htmlfile!="" and strstr($htmlfile,".") )
		{

			require_once RootDir.'/inc/ActionFile.Class.php';
			$myc=new ActionFile();
			//die($url."<br>@".$htmlfile);
			if($myc->CreateAnyPageToPage($url,RootDir.$htmlfile))
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}

	}


	/**
	 * 计算订单的状态
	 * @param $ordercando 订单的有效性,1表示接受此订单，2表示推荐相近产品，3表示拒绝服务
	 * @param $orderfalg  订单状态 值若是del，表示被删除 默认t表示正常,1表示工作人员已回复
	 * @param $dingjing   支付成功的订单金额
	 * @param $orderaddtime 下单时间
	 * @return 返回值是标题的颜色class
	 * @
	 */
	function getorderstatus($ordercando,$orderfalg,$dingjing,$orderaddtime)
	{
		$temp="nowork";//临时变量,初始状态为没有回复处理
		if($ordercando=="3") return "historyword";//当订单是取消状态时，显示历史订单

		if($orderfalg==1)
		{
			$temp="yeswork";//已回复
		}

		if($dingjing>0)
		{
			$temp="donework";//已执行
		}

		//当下单时间小时今天30天，并且工作人员没有回复时，表示已成历史订单
		if((time()-$orderaddtime)>=60*60*24*30 and $orderfalg!=1)
		{
			$temp="historyword";//历史订单
		}
		return $temp;
	}

	/**
	 * 格式化显示订单内容
	 * @param str $str 订单内容
	 * @return 返回格式化后的内容
	 */
	function formatOrderInfo($str)
	{

		//$temp=$temp." <br><b>优惠金额：</b>".getMiddleStr($str,"\{优惠金额\}","\{\/优惠金额\}");//获取优惠金额
		$roomsinfo=getMiddleStr($str,"\{房间信息\}","\{\/房间信息\}");//获取房间信息

		//print_r($roomsinfo);


		if($roomsinfo!="") $temp=$temp."<b>房间信息：</b><br>".$roomsinfo;

		$rooms=getMiddleStr($str,"\{房间数\}","\{\/房间数\}");//获取房间数
		if($rooms!="") $temp=$temp."<br><b>房间数：</b>".$rooms;


		$tel=getMiddleStr($str,"\{电话\}","\{\/电话\}");//获取联系人电话
		if($tel!="") $temp=$temp."<br><b>电话：</b>".$tel;


		$guojia=getMiddleStr($str,"\{国家\}","\{\/国家\}");
		if($guojia!="") $temp=$temp." <br><br><b>国家：</b>".$guojia;

		$shengshi= getMiddleStr($str,"\{省市\}","\{\/省市\}");
		if($shengshi!="") $temp=$temp."  <br><b>省市：</b>".$shengshi;

		$xiangxudizi= getMiddleStr($str,"\{详细地址\}","\{\/详细地址\}");
		if($xiangxudizi!="") $temp=$temp."  <br><b>详细地址：</b>".$xiangxudizi;
		return $temp;
	}

	/**
	 * 格式化多个客人的资料格式，
	 * @param string $str
	 * @param str $spl 默认的连接符
	 */
	function formatOrderGuests($str,$spl="<br>")
	{

		$temp="";
		//获取成人信息
		$chengren=getMiddleStr($str,"\{第[0-9]{1,}位成人\}?","\{\/第[0-9]{1,}位成人\}","all");

		$i=1;
		foreach($chengren as $v)
		{
			$temp=$temp."<br><b>第".$i."位成人信息:</b><br>";
			$temp=$temp." 客人姓名英文：".getMiddleStr($v,"\{客人姓名英文\}","\{\/客人姓名英文\}");
			$temp=$temp." 性别：".getMiddleStr($v,"\{客人性别\}","\{\/客人性别\}");
			$temp=$temp." 护照：".getMiddleStr($v,"\{护照\}","\{\/护照\}");
			$temp=$temp." 手机：".getMiddleStr($v,"\{手机\}","\{\/手机\}");
			$i++;
		}

		//获取儿童信息
		$ertong=getMiddleStr($str,"\{第[0-9]{1,}位小孩\}","\{\/第[0-9]{1,}位小孩\}","all");
		$i=1;
		foreach($ertong as $v)
		{
			$temp=$temp."<br><b>第".$i."位小孩信息:</b><br>";
			$temp=$temp." 客人姓名英文：".getMiddleStr($v,"\{客人姓名英文\}","\{\/客人姓名英文\}");
			$temp=$temp." 客人性别：".getMiddleStr($v,"\{客人性别\}","\{\/客人性别\}");
			$temp=$temp." 护照：".getMiddleStr($v,"\{护照\}","\{\/护照\}");
			$temp=$temp." 手机：".getMiddleStr($v,"\{手机\}","\{\/手机\}");
			$i++;
		}
		/*
		//获取婴儿信息
		$i=1;
		$yinger=getMiddleStr($str,"\{第[0-9]{1,}位婴儿\}","\{\/第[0-9]{1,}位婴儿\}","all");
		foreach($yinger as $v)
		{
			$temp=$temp."<br><b>第".$i."位婴儿信息:</b><br>";
			$temp=$temp." 客人姓名英文：".getMiddleStr($v,"\{客人姓名英文\}","\{\/客人姓名英文\}");
			$temp=$temp." 客人性别：".getMiddleStr($v,"\{客人性别\}","\{\/客人性别\}");
			$temp=$temp." 护照：".getMiddleStr($v,"\{护照\}","\{\/护照\}");
			$temp=$temp." 手机：".getMiddleStr($v,"\{手机\}","\{\/手机\}");
			$i++;
		}
		*/
		return $temp;
	}

	/**
	 * 输出"checked"字符串
	 * @param  $ystr 值1
	 * @param  $mstr 值2
	 * @return 若两个参数的值相等，echo"checked" ,否则不处理
	 */
	function echoChecked($ystr,$mstr="1")
	{
		if($ystr==$mstr) echo "checked";
	}

	/**
		生成html标签里的textarea
	 * @param $idstr id值
	 * @param $dv 当前值
	 * @param $width 宽
	 * @param $height 高
	 * @param $mv 默认值 当当前值为空时，显示默认值
	 * @return 返回生成的html代码
	 */
	function ui_textarea($idstr,$dv,$width,$height,$mv="")
	{
		//$dv=str_replace("'", "\'", $dv);
		iconv("gb2312", "utf-8", $dv);
		if($dv=="") $dv=$mv;
		return "<textarea name='$idstr' id='$idstr' cols='$width' rows='$height'>".$dv."</textarea>";
	}
	
	/**
	 * 是否显示input类型并默认其值或只显示其值
	 * @param $inputname 
	 * @param $classname input的classname
	 * @param $showwhere 显示input的条件 当其值为yes或1时符合
	 * @param $v 其值
	 */
	function ui_isinput($inputname,$classname,$showwhere,$v,$inputlength="12",$inputtype="text")
	{
		if($showwhere=="yes" or $showwhere=="1")
		{
			if($inputtype=="text")
			{
			return "<input type='text' id='".$inputname."' name='".$inputname."'
			 class='".$classname."' size='".$inputlength."' value='".htmlspecialchars($v)."'>";
			}
			elseif ($inputtype=="textarea")
			{
				return " <textarea id='".$inputname."' name='".$inputname."' class='".$classname."' cols='".$inputlength."' rows='8'>".htmlspecialchars($v)."</textarea>";
			}
		}
		else 
		{
			return $v;
		}
	}
	
	
	
	/**
 * 显示一个百度编辑器，
 * 在调用此函数前需要引入文件:
 * global $SystemConest;
	include_once $SystemConest[0].'/inc/editorfilespath.php';
 * @param str $v  原字段值
 * @param  $filename 字段的名称，用于$_post获取值
 * @return 返回一个编辑器源码
 */
function geteditor($v,$filename)
{

	$r="
	<script type='text/plain' id='".$filename."myEditor'>".$v."</script>
	<script type='text/javascript'>
    var editor".$filename." = new baidu.editor.ui.Editor({
		textarea:\"".$filename."\"
		});
    editor".$filename.".render('".$filename."myEditor');
</script>
	
";
	return $r;
	
	
}
	
	

	/**
	给目标字符串进行格式转换
	 * @param $mstr 源字符串
	*/
	function ui_ubb($mstr)
	{
		$mstr=getDelHtml($mstr);
		$mstr=str_replace("[b]","<b>",$mstr);
		$mstr=str_replace("[/b]","</b>",$mstr);

		$mstr=str_replace("[red]","<span style='color:#F00'>",$mstr);
		$mstr=str_replace("[/red]","</span>",$mstr);

		$mstr=str_replace("[blue]","<span style='color:blue'>",$mstr);
		$mstr=str_replace("[/blue]","</span>",$mstr);


		//$mstr=str_replace("[p align=","<p style=\"TEXT-ALIGN: ",$mstr);

		$mstr=preg_replace("/\[p[\s]*align\=(\w*)\]/i", "<p style='TEXT-ALIGN:\${1}'> ", $mstr);
		//$mstr=preg_replace("/(left)|(center)|(right)\]/", "'>", $mstr);
		$mstr=str_replace("[/p]", "</p>", $mstr);

		$mstr=str_replace("[a","<a",$mstr);
		$mstr=str_replace("']","'>",$mstr);
		$mstr=str_replace("\"]","\">",$mstr);
		$mstr=str_replace("[/a]","</a>",$mstr);
		$mstr=str_replace("[img","<img",$mstr);
		$mstr=str_replace("\n","<br>",$mstr);

		return $mstr;
	}
	
	/**
	 * 替换字符串中的下划线，应用到的情况，是字符串做为参数传递时
	 * @param $str
	 */
	function ui_replacexiahuax($str)
	{
		return str_replace("_", "@#$", $str);
	}
	/**
	 * 还原字符串中的下划线，应用到的情况，是字符串做为参数传递传递，下划线被替换成了特殊字符时
	 * @param $str
	 */
	function ui_huanyuanxiahuax($str)
	{
		return str_replace("@#$", "_", $str);
	}
	
	
	/**
	 * 根据标识返回订单的处理状态
	 * @param $sflag 数据库里存的处理标识  订单的有效性,1表示接受此订单，2表示推荐相近产品，3表示拒绝服务
	 * @return 返回不同状态的字符串
	 */
	function getorderstatius($sflag)
	{
		if($sflag==1)	return "欢迎你预定本产品，你的定单已接受，受理情况或部份变动请参考我们的处理意见";
		if($sflag==2)	return "欢迎你预定本产品：您指定的服务不能成行，推荐预订以下相近产品或服务";
		if($sflag==3)   return "对不起，该订单已经失效,";
		return "此订单还没有处理，请等待我们工作人员的处理。";

	}

	/**
		一条线路的一个字段没有值时，调用预设的一个文件里的代码,目录是相对于根目录的绝对目录
		@param $dv 当前值
	 * @param $filename 文件名
	 */
	function ToursOneFileldDeVal($dv,$filename)
	{
		if($dv=="")	return file_get_contents(RootDir."/Tpl/default/tours/".$filename);
		return $dv;
	}

	/**
	 * 将浮点数转成整型,一般用于将价格后的小数点去掉
	 * @param $num 数字
	 * @return 返回整型
	 */
	function floattoInt($num)
	{
		return (int)$num;
	}

	
	
	//将$str数字字符串转成大写的中文人民币方式
function TurnDaxienum($str)
{
	if(is_numeric($str))
	{
		$isfloat=0;//是否有小数标识
		if(strstr($str,"."))
		{
			$strarr=explode(".",$str);
			$str=$strarr[0];
			$isfloat=1;
		}


		$str=$str."";
		$num=strlen($str);
		$returnstr="";
		$arr=array();
		for($i=0;$i<$num;$i++)
		{
			$returnstr=$returnstr.numRmb($str[$i]);
			$arr[$i]=numRmb($str[$i]);
		}

		$arr=array_reverse($arr);
		$arrnew=array();
		$i=1;
		foreach($arr as $v)
		{
			if($v!="零")
			{
				switch($i)
				{
								case 2:
					case 6:
					case 10:
						$arrnew[$i]=$v."拾";
						break;
					case 3:
					case 7:
					case 11:
						$arrnew[$i]=$v."百";
						break;
					case 4:
					case 8:
						$arrnew[$i]=$v."仟";
						break;
					case 5:
						$arrnew[$i]=$v."万";
						break;
					case 9:
						$arrnew[$i]=$v."亿";
						break;
					default :
						$arrnew[$i]=$v;
						break;
				}
			}
			else
			{
				$arrnew[$i]="零";
			 }
			$i++;
		}
		$arrnew=array_reverse($arrnew);
		$str=arrValuetoStr($arrnew);

		if($isfloat==1)//最后结果加上小数部份
		{
			$numx=strlen($strarr[1]);
			$strx="";
			for($i=0;$i<$numx;$i++)
			{
				$strx=$strx.numRmb($strarr[1][$i]);
			}


			$str=$str.".".$strx;
		}

		$pattern="/(零)+/";

		$str=preg_replace($pattern,"零",$str);//去掉多个零,只留一个零
		$pattern="/(零)\./";
		$str=preg_replace($pattern,".",$str);//去掉多个零,只留一个零

		if(mb_substr($str,mb_strlen($str)-2,2)=="零")//去掉最后一个零
		{
			$str=mb_substr($str,0,-2);
		}

		$pattern="/\.(零)\s+/";
		$str=preg_replace($pattern,"",$str);//去掉多个零,只留一个零
		if(mb_substr($str,strlen($str)-1,1)==".")//去掉最后一个.
		{
			$str=substr($str,0,-1);
		}

		return $str;
	}
	else
	{
		return $str;
	}
}

/**
 * 格式化url地址里的与系统符号相冲突的东西

 * @param unknown_type $str
 */
function formaturl($str){
	$parr=array("/[\-]+/","/[\/]+/");
	$rearr=array("","");
	return preg_replace($parr, $rearr, $str);
	
}


	
	
/**
 * 获取社区用户的头像
 * @param $uid 用户id
 * @param $type 头像类型
 * @param $width  宽度,
 * @param $height  高度
 * @param $altstr  提示信息
 */
	function getUsertouxiang($uid,$type,$width,$height,$altstr)
	{
		$uid = abs(intval($uid));
        $uid = sprintf("%09d", $uid);
        $dir1 = substr($uid, 0, 3);
        $dir2 = substr($uid, 3, 2);
        $dir3 = substr($uid, 5, 2);
        $typeadd = $type == 'real' ? '_real' : '';
        $strpath= $dir1 . "/" . $dir2 . "/" . $dir3 . "/" . substr($uid, -2) . $typeadd . "_avatar_$type.jpg";
         return "<img width='$width' height='$height' alt='$altstr' src='" . SYS_UCcenter . "/data/avatar/" . $strpath . "' onerror=\"this.onerror=null;this.src='" . SYS_UCcenter . "/images/noavatar_". $type . ".gif'\">";
	}
	
	/**
	 * 获取字符串中的第一个图片地址
	 */
	function getstrtopic($str)
	{
		$p="/<img(?!>)[\s\S]src\=['|\"]{0,1}([\S][^>]+)['|\"]{0,1}[\s\S]*?>/";
		preg_match($p, $str,$temp);
		$r= $temp?$temp[0]:"";
		return ($r)?preg_replace($p, "$1", $r):"";
	}
	
?>
<? function Form_check()
{
?>
<script language="javascript" >
function len(s) {
var l = 0;
var a = s.split("");
for (var i=0;i<a.length;i++) {
if (a[i].charCodeAt(0)<299) {
l++;
} else {
l+=2;
}
}
return l;
}




function formatTime(str)
{
	//验证jja日期格式"2010-1-1" 和 "2010-2-2 12:12"两种形式的日期
	if(str.indexOf(":")>1)
		{
			var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2})$/;
			   var r = str.match(reg);
			   if(r==null) return false;
		   var d = new Date(r[1], r[3]-1,r[4],r[5],r[6]);
		   if(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]) return true;
		}
		else
		{

			var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
				if(r==null) flag=false;
				   var d= new Date(r[1], r[3]-1, r[4]);
				   if((d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]))
				   {
					   return true;
				   }
		}


}
//验证日期是否合法
function IsValidDate(Value){
     if (Value=="")
   {
    //alert("截止日期不能为空，请输入！");
 //document.vbform.bdaynew.focus();
 	return false;
   }
    if (formatTime(Value)==false)
	 {
		//alert("截至日期格式错误！");
		//cform.bdaynew.focus();
		return false;
	 }

   return true;
}




//检查下拉框
function Check_ListBox(Value,ErrMsg)
{
	return (Value<1)?ErrMsg:"";
}

//单/复选框检查
function Check_SelectBox(RadioObject,MinLen,MaxLen,ErrMsg)
{
	var Radio,ee;
	ee="";
	var len = RadioObject.length;
	var num=0;
	for(i=0;i<len;i++)
	{
		if(RadioObject[i].checked==true) num=num+1;
	}

	return (num<=MaxLen && num>=MinLen)?"":ErrMsg;
	
}


//字符长度验证
function CharLen(Value,MinLen,MaxLen,ErrMsg)
{
	if(Value.length<MinLen || Value.length>MaxLen) return ErrMsg;
	return "";
}

//数字验证
function IsNum(Value,MinValue,MaxValue,ErrMsg)
{

	if(isNaN(Value)) return ErrMsg;
	if(Value.length=0) return ErrMsg;
	return (parseInt(Value)>=MinValue && parseInt(Value)<=MaxValue)?"":ErrMsg;


	if(isNaN(Value)) return ErrMsg;
	if(Value.length=0) return ErrMsg;
	return (parseInt(Value)>=MinValue && parseInt(Value)<=MaxValue)?"":ErrMsg;

}

//日期验证
function IsDateTime(Value,MinValue,MaxValue,ErrMsg)
{
	if(IsValidDate(Value)==true)
	{	var t=new Date(Value);

		var t1=new Date(MinValue);
		var t2=new Date(MaxValue);
		return (Date.parse(t)-Date.parse(t1)<0 || Date.parse(t)-Date.parse(t2)>0)?ErrMsg:"";
	}
	else
	{
		return ErrMsg;
	}

}


//邮箱验证
function IsMail(Value,MinLen,MaxLen,ErrMsg)
{
	var Regu,Re,Matches,InfoCout;

	//对电子邮件的验证
	var myreg = /^[\w\-\_\.]+@[\w\-\_\.]+\.[\w]$/;
	if(Value!="")
	{
		if(myreg.test(Value))
		{
			if(Value.length>=MinLen && Value.length<=MaxLen) return "";
		}

	}
	return ErrMsg;
}

function url(Value,MinLen,MaxLen,ErrMsg)
{
	return (Value.length<2)?ErrMsg:"";
}

//显示一个栏目信息
function showoneid(filedid)
{
	$(document).ready(function(){
		$("#tr_FieldName_"+filedid).show();
	});
}

//当str1的值等于str2的值时，才显示
function showoneidbyv(filedid,str1,str2){
	$(document).ready(function(){
		if(str1==str2){
			$("#tr_FieldName_"+filedid).show();
		}else{
			$("#tr_FieldName_"+filedid).hide();
		}
	});
}

//隐藏一个栏目信息
function hidelanmu(filedid)
{
	$(document).ready(function(){
		$("#tr_FieldName_"+filedid).hide();
	});
}



</script>
<? }
/**
 * 分数字符串，每个分值之间用,分隔
 * @param $str1
 */
function gethaopingdu($str1)
{
	$temp=preg_replace("/,$/", "", $str1);
	$arr=explode(",",$temp);
	$sum=0;
	$length=count($arr);
	foreach($arr as $v){
		$sum+=$v;
	}
	return number_format(($sum / $length)*20.00,2);
}

/**
 * 
 * @param $name cookie名称
 * @param $v  cookie值
 * @param $times  有效时间 值认为7200秒
 * @param $domain  有效的域名 默认为整个域名下有效
 */
function setmycookies($name,$v,$times=40000,$domain="/")
{
	$times=($times==40000)?time()+40000:time()+times;
	setcookie($name,$v,$times,$domain);
}

/**
 * 自定义输出变量并停止执行,参数主要用于数组，也可以是字符串
 * 主要作用就是为了方便查看输出的数组的值
 * @param $str
 */
function mydie($str){
	echo "<pre>";
	print_r($str);
	die;
}

?>
